package simunrobot;

import java.util.Vector;

import processing.core.*;
import remixlab.proscene.Scene;
import simunrobot.core.Core;
import simunrobot.core.Eslabon;
import simunrobot.core.Robot;
import simunrobot.core.SItem;

public class Simunrobot extends PApplet{

	Scene scene;
	Robot mirobot;
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void setup()
	{
		size(640,480,P3D);
		scene = new Scene(this);
		Core.getInstance().setApplet(this);
		mirobot = new Robot(null);
		// Esto se hace asi pq no he revisado como leer XML desde JAVA XD
		Vector<String> data = new Vector<String>();
		data.add("0");data.add("0");data.add("0");data.add("0");
		
		Eslabon eslab0 = new Eslabon(mirobot,data);
		eslab0.setGeometria("Eslabon0.obj");
		
		data.clear();
		data.add("68");data.add("0");data.add("0");data.add("0");
		Eslabon eslab1 = new Eslabon(eslab0,data);
		eslab1.setGeometria("Eslabon1.obj");
		
		data.clear();
		data.add("0");data.add("90");data.add("26");data.add("90");
		Eslabon eslab2 = new Eslabon(eslab1,data);
		eslab1.setGeometria("Eslabon2.obj");
		
		data.clear();
		data.add("-2");data.add("0");data.add("68");data.add("180");
		Eslabon eslab3 = new Eslabon(eslab2,data);
		eslab1.setGeometria("Eslabon3.obj");
		
		data.clear();
		data.add("66");data.add("-90");data.add("3.5");data.add("0");
		Eslabon eslab4 = new Eslabon(eslab3,data);
		eslab1.setGeometria("Eslabon4.obj");
		
		data.clear();
		data.add("0");data.add("-90");data.add("0");data.add("-90");
		Eslabon eslab5 = new Eslabon(eslab4,data);
		eslab1.setGeometria("Eslabon5.obj");
		
		scene.setHelpIsDrawn(false);
		scene.setGridIsDrawn(true);
	}
	public void draw()
	{
		background(0);
		scene.beginDraw();
		drawRobot(mirobot);
		scene.endDraw();
	}
	public void keyPressed()
	{
		scene.defaultKeyBindings();
	}
	private void drawRobot(Robot robot)
	{
		RecursiveDraw(robot.getEslabonAt(0));
	}
	private void RecursiveDraw(SItem child)
	{
		child.Update();
		pushMatrix();
		child.aframe.applyTransformation(this);
		child.draw();
		if(child.childCount()==0)
			return;
		for(int i=0;i<child.childCount();i++)
			RecursiveDraw(child.child(i));
		popMatrix();
	}
}
